Первый из них - условный оператор if
Переводится "если".
Пример:
if(d<0)printf("korney net");
Это простейшая форма оператора, в общем виде:
if(условие) оператор_если_да;
Оператор выполняется, только если условие истинно.
Скобки вокруг условия обязательны.
Условием на С может быть любое целочисленное выражение. 0 считается ложью, не ноль - истиной. Но, конечно, в основном применяются логические операторы.
Одно условие мы уже видели - (d<0) - ничего нового в нем нет. Аналогично, ничего непонятного нет в условиях >, >=,<=. Немного непривычно - но привыкнуть можно - что != означает "не равно". А вот проверка на равенство записывается ==, это специальный оператор, отличающийся от присваивания (=), и частый источник ошибок.
(75%)О =, == и ===
Смотрим разницу.
Правильная проверка на равенство:
if(x==y)printf("x raven y");
выполняет печать, если x равен y.
Посмотрим, что будет, если пропустить один знак равенства:
if(x=y)printf("x raven y");
Теперь в скобках стоит присваивание. В x записывается значение y, и это значение является результатом присваивания. Оператором if оно воспринимается как логическое (0 / не 0). Таким образом, печать происходит, если y не 0, что явно неверно. Кроме того, мы испортили x.
Если вы пропустите один знак равенства в своей программе, компилятор выдаст предупреждение ("возможно, неверное присваивание"), но программа запустится. Читайте предупреждения!
Программа запустится - потому что компилятор считает, что вы знаете, что делаете.
Иногда присваивание в условии - именно то, что нужно, например:
if(f=fopen("имя_файла"))
Здесь условие срабатывает, если файл успешно открылся, при этом открытый поток присваивается переменной f для дальнейшего использования.
А что же насчет ===?
Вам повезло. В языке С такой конструкции нет. ;)
Оператор if может иметь не только часть, срабатывающую по выполнению условия, но и часть, срабатывающую в противном случае:
Переводится "если".
Пример:
Это простейшая форма оператора, в общем виде:
Оператор выполняется, только если условие истинно.
Скобки вокруг условия обязательны.
Условием на С может быть любое целочисленное выражение. 0 считается ложью, не ноль - истиной. Но, конечно, в основном применяются логические операторы.
Одно условие мы уже видели - (d<0) - ничего нового в нем нет. Аналогично, ничего непонятного нет в условиях >, >=,<=. Немного непривычно - но привыкнуть можно - что != означает "не равно". А вот проверка на равенство записывается ==, это специальный оператор, отличающийся от присваивания (=), и частый источник ошибок.
Смотрим разницу.
Правильная проверка на равенство:
выполняет печать, если x равен y.
Посмотрим, что будет, если пропустить один знак равенства:
Теперь в скобках стоит присваивание. В x записывается значение y, и это значение является результатом присваивания. Оператором if оно воспринимается как логическое (0 / не 0). Таким образом, печать происходит, если y не 0, что явно неверно. Кроме того, мы испортили x.
Если вы пропустите один знак равенства в своей программе, компилятор выдаст предупреждение ("возможно, неверное присваивание"), но программа запустится. Читайте предупреждения!
Программа запустится - потому что компилятор считает, что вы знаете, что делаете.
Иногда присваивание в условии - именно то, что нужно, например:
Здесь условие срабатывает, если файл успешно открылся, при этом открытый поток присваивается переменной f для дальнейшего использования.
А что же насчет ===?
Вам повезло. В языке С такой конструкции нет. ;)
Оператор if может иметь не только часть, срабатывающую по выполнению условия, но и часть, срабатывающую в противном случае:
Имеется возможность выполнить по условию не один оператор, а несколько. Для этого операторы объединяются операторными скобками {}.
Кусок про тернарный оператор решили убрать, т.к. не встречается в лабах